/**!
 * lg-fullscreen.js | 1.0.0 | October 5th 2016
 * http://sachinchoolur.github.io/lg-fullscreen.js
 * Copyright (c) 2016 Sachin N;
 * @license GPLv3
 */
(function(f) {
  if (typeof exports === "object" && typeof module !== "undefined") {
    module.exports = f()
  } else if (typeof define === "function" && define.amd) {
    define([], f)
  } else {
    var g;
    if (typeof window !== "undefined") {
      g = window
    } else if (typeof global !== "undefined") {
      g = global
    } else if (typeof self !== "undefined") {
      g = self
    } else {
      g = this
    }
    g.LgFullscreen = f()
  }
})(function() {
  var define, module, exports;
  return (function e(t, n, r) {
    function s(o, u) {
      if (!n[o]) {
        if (!t[o]) {
          var a = typeof require == "function" && require;
          if (!u && a) return a(o, !0);
          if (i) return i(o, !0);
          var f = new Error("Cannot find module '" + o + "'");
          throw f.code = "MODULE_NOT_FOUND", f
        }
        var l = n[o] = {
          exports: {}
        };
        t[o][0].call(l.exports, function(e) {
          var n = t[o][1][e];
          return s(n ? n : e)
        }, l, l.exports, e, t, n, r)
      }
      return n[o].exports
    }
    var i = typeof require == "function" && require;
    for (var o = 0; o < r.length; o++) s(r[o]);
    return s
  })({
    1: [function(require, module, exports) {
      (function(global, factory) {
        if (typeof define === "function" && define.amd) {
          define([], factory);
        } else if (typeof exports !== "undefined") {
          factory();
        } else {
          var mod = {
            exports: {}
          };
          factory();
          global.lgFullscreen = mod.exports;
        }
      })(this, function() {
        'use strict';

        var _extends = Object.assign || function(target) {
          for (var i = 1; i < arguments.length; i++) {
            var source = arguments[i];

            for (var key in source) {
              if (Object.prototype.hasOwnProperty.call(source, key)) {
                target[key] = source[key];
              }
            }
          }

          return target;
        };

        var fullscreenDefaults = {
          fullScreen: true
        };

        var Fullscreen = function Fullscreen(element) {

          this.el = element;

          this.core = window.lgData[this.el.getAttribute('lg-uid')];
          this.core.s = _extends({}, fullscreenDefaults, this.core.s);

          this.init();

          return this;
        };

        Fullscreen.prototype.init = function() {
          var fullScreen = '';
          if (this.core.s.fullScreen) {

            // check for fullscreen browser support
            if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled && !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
              return;
            } else {
              fullScreen = '<button class="mdui-btn mdui-btn-icon mdui-ripple mdui-ripple-white mdui-float-right lg-fullscreen"><i class="mdui-icon material-icons mdui-text-color-white-icon fullscreen">&#xe5d0;</i><i class="mdui-icon material-icons mdui-text-color-white-icon fullscreen_exit">&#xe5d1;</i></button>';
              this.core.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', fullScreen);
              this.fullScreen();
            }
          }
        };

        Fullscreen.prototype.requestFullscreen = function() {
          var el = document.documentElement;
          if (el.requestFullscreen) {
            el.requestFullscreen();
          } else if (el.msRequestFullscreen) {
            el.msRequestFullscreen();
          } else if (el.mozRequestFullScreen) {
            el.mozRequestFullScreen();
          } else if (el.webkitRequestFullscreen) {
            el.webkitRequestFullscreen();
          }
        };

        Fullscreen.prototype.exitFullscreen = function() {
          if (document.exitFullscreen) {
            document.exitFullscreen();
          } else if (document.msExitFullscreen) {
            document.msExitFullscreen();
          } else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
          } else if (document.webkitExitFullscreen) {
            document.webkitExitFullscreen();
          }
        };

        // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
        Fullscreen.prototype.fullScreen = function() {
          var _this = this;

          utils.on(document, 'fullscreenchange.lgfullscreen webkitfullscreenchange.lgfullscreen mozfullscreenchange.lgfullscreen MSFullscreenChange.lgfullscreen', function() {
            if (utils.hasClass(_this.core.outer, 'lg-fullscreen-on')) {
              utils.removeClass(_this.core.outer, 'lg-fullscreen-on');
            } else {
              utils.addClass(_this.core.outer, 'lg-fullscreen-on');
            }
          });

          utils.on(this.core.outer.querySelector('.lg-fullscreen'), 'click.lg', function() {
            if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
              _this.requestFullscreen();
            } else {
              _this.exitFullscreen();
            }
          });
        };

        Fullscreen.prototype.destroy = function() {

          // exit from fullscreen if activated
          this.exitFullscreen();

          utils.off(document, '.lgfullscreen');
        };

        window.lgModules.fullscreen = Fullscreen;
      });

    }, {}]
  }, {}, [1])(1)
});
